﻿function Convocatoria() {
    this.PreInit = function () {

        var _parent = this;
        _parent.TituloModalForm = "Convocatoria";
        _parent.CssModalForm = {
            'top': "40%",
            'width': '840px',
            'margin-left': function () {
                return -($(this).width() / 2);
            }
        }

        _parent._Editar();
        _parent._Eliminar();
        _parent._Aulas();
        _parent._Requisitos();
        _parent._TiposPago();
        _parent._getCont().find("#nuevo").click(function () {
            _parent.Form();
        })
    }

    /**
    Editar el registro
    */
    this._Editar = function () {

        var _parent = this;

        _parent._getContList().off('.editar');
        _parent._getContList().on('click', '.editar', function (e) {
            e.preventDefault();
            var obj = $(this);


            _parent.Form(
                {
                    id: obj.attr('data-Id')
                }
            )
        });
    };




    /**
    Eliminar el registro
    */
    this._Eliminar = function () {

        var _parent = this;

        _parent._getContList().off('.eliminar');
        _parent._getContList().on('click', '.eliminar', function (e) {
            e.preventDefault();
            var obj = $(this);

            var confirmacion = _parent._MensajeConfirmacion();
            confirmacion.titulo = "Convocatoria";
            confirmacion.contenido = "¿Esta seguro de eliminar la convocatoria?";

            confirmacion.yes = function () {
                jQuery.post(URL_PAGE + "Administrador/Convocatoria/EliminarConvocatoria",
                                         {
                                             Id: obj.attr('data-Id')
                                         },
                             function (data) {

                                 confirmacion.getModal.modal('hide');
                                 _parent._MensajesOperacion("success",
                                                    "Registro eliminado",
                                                    "La convocatoria fue eliminada correctamente");
                                 _parent.List();
                             }
                   , "json");
            };
            confirmacion.modal();
        });
    };


    //Despues de cargar el formulario
    this._PostForm = function () {
        var _parent = this;
        _parent._InicializarVisualizacionControles();
        _parent.ValidacionCamposForm();
        _parent._CargarEventosForm();

        // Dandole scroll al alto del formulario
        _parent.ModalForm.find(".modal-body").css({ overflow: 'auto',
            'height': '360px'            
        })
    }

    this._InicializarVisualizacionControles = function () {

        var _parent = this;
        var form = _parent._getForm();

        _parent._ValidarEsParaMaestria();
    }

    this.ValidacionCamposForm = function () {

        var _parent = this;
        var form = _parent._getForm();
        form.find("#Conv_Descripcion").addClass("validate[required]");
        form.find("#Conv_HoraE").addClass("validate[required]");
    }

    this._ValidarEsParaMaestria = function () {
        var _parent = this;
        var form = _parent._getForm();

        if (form.find("#Conv_EsMaestria").val() == 'false') {
            form.find("#Control_Inscripcion_Puntaje").hide();
            form.find("#Control_Fecha_Hora_Examen").hide();
        }
        else {
            form.find("#Control_Inscripcion_Puntaje").show();
            form.find("#Control_Fecha_Hora_Examen").show();
        }
    }

    /**
    Carga de eventos
    */
    this._CargarEventosForm = function () {

        var _parent = this;
        var form = _parent._getForm();

        _parent.ConvertFechaCombos(form.find("#FechaInicioInscripcion"), "dd/mm/AAAA", "dd/mm/AAAA", true);
        _parent.ConvertFechaCombos(form.find("#FechaFinInscripcion"), "dd/mm/AAAA", "dd/mm/AAAA", true);

        _parent.ConvertFechaCombos(form.find("#FechaInicioAdministracion"), "dd/mm/AAAA", "dd/mm/AAAA", true);
        _parent.ConvertFechaCombos(form.find("#FechaFinAdministracion"), "dd/mm/AAAA", "dd/mm/AAAA", true);

        _parent.ConvertFechaCombos(form.find("#Conv_FechaExamen"), "dd/mm/AAAA", "dd/mm/AAAA", true);

        _parent.ConvertFechaCombos(form.find("#FechaDeEntregaResultados"), "dd/mm/AAAA", "dd/mm/AAAA", true);

        _parent._getContForm().find("#aceptar").click(function () {
            form.submit();
        })

        _parent._getContForm().find("#Conv_EsMaestria").change(function () {
            _parent._ValidarEsParaMaestria();
        });
        
        form.validationEngine({
            ajaxSubmit: true,
            onValidationComplete: function (form, status) {

                if (status) {
                    form.ajaxSubmit({
                        success: function (responseText, statusText, xhr, $form) {

                            _parent._MensajesOperacion("success", "Registro grabado", "Se registro correctamente la convocatoria");
                            _parent.List();
                            _parent._getContForm().modal('hide');
                        }
                    });
                }
            }
        });

    }

    /**
    Registrar Financiamiento
    */
    this._Aulas = function () {

        var _parent = this;

        _parent._getContList().off('.registrar-aulas');
        _parent._getContList().on('click', '.registrar-aulas', function (e) {
            e.preventDefault();
            var obj = $(this);
            //Hacemos un modal
            var modal = _parent._getModalV2();

            $.ajax({
                url: URL_PAGE + "Administrador/Convocatoria/IndexAula",
                data: { IdConvocatoria: obj.attr("data-IdConvocatoria") },
                type: "post",
                success: function (html) {
                    modal.find(".modal-body").html(html);
                    //Caturamos el contenedor
                    cont = modal.find(".modal-body").find("#_ConvocatoriaAula");

                    //Ocultamos los botones
                    modal.find(".modal-footer").find("#aceptar").hide();

                    modal.find(".modal-header").find("h2").html(obj.attr("data-NombreConvocatoria"));
                    //Capturamos el script
                    jQuery.getScript(URL_PAGE + "Scripts/app/administrador/ConvocatoriaAula.js", function () {
                        _ConvocatoriaAula.prototype = new Mantenimiento();
                        var convocatoriaAula = new _ConvocatoriaAula();
                        convocatoriaAula.IdConvocatoria = obj.attr("data-IdConvocatoria");
                        convocatoriaAula.Init(cont,
                        {
                            Register: URL_PAGE + "Administrador/Convocatoria/RegistrarAula",
                            Form: URL_PAGE + "Administrador/Convocatoria/Form",
                            List: URL_PAGE + "Administrador/Convocatoria/ListAula"
                        }
                        , "All");
                        convocatoriaAula.Form({ IdConvocatoria: convocatoriaAula.IdConvocatoria });
                        convocatoriaAula.List({ IdConvocatoria: convocatoriaAula.IdConvocatoria });

                        modal.css({
                            'width': '700px',
                            'margin-left': function () {
                                return -($(this).width() / 2);
                            }
                        });

                        modal.modal("show");
                    });
                }
            });
        });
    };

    // Registrar requisitos
    this._Requisitos = function () {
        var _parent = this;

        _parent._getContList().off('.registrar-requisitos');
        _parent._getContList().on('click', '.registrar-requisitos', function (e) {
            e.preventDefault();
            var obj = $(this);

            // Hacemos un modal
            var modal = _parent._getModalV2();

            $.ajax({
                url: URL_PAGE + "Administrador/Convocatoria/IndexRequisitos",
                data: { CodigoConvocatoria: obj.attr("data-CodigoConvocatoria") },
                type: "post",
                success: function (html) {
                    modal.find(".modal-body").html(html);

                    // Capturamos el contenedor
                    cont = modal.find(".modal-body").find("#_ConvocatoriaRequisitos");

                    // Ocultando botones y redefiniendo nuevo diseño de footer
                    modal.find(".modal-footer").find("#aceptar").hide();
                    modal.find(".modal-footer").find("#myModalClose").hide();
                    modal.find(".modal-footer").html('<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true" id="myModalClose"><i class="icon-ok-sign icon-white"></i>&nbsp;Cancelar</button><button type="submit" id="guardar" class="btn btn-danger"><i class="icon-ok-sign icon-white"></i>&nbsp;Guardar</button>');

                    // Asignando funcionalidad a nuevo botón de footer
                    modal.find(".modal-footer").off("click", "#guardar");
                    modal.find(".modal-footer").on("click", "#guardar", function () {
                        modal.find(".modal-body").find("#_Form").submit();
                    });

                    // Agregamos nuevos botones
                    modal.find(".modal-header").find("h2").html("Configuración de Requisitos");
                    cont.find("h4").html(obj.attr("data-NombreConvocatoria"));

                    //Capturamos el script
                    jQuery.getScript(URL_PAGE + "Scripts/app/administrador/ConvocatoriaRequisitos.js", function () {
                        _ConvocatoriaRequisitos.prototype = new Mantenimiento();
                        var convocatoriaRequisitos = new _ConvocatoriaRequisitos();
                        convocatoriaRequisitos.CodigoConvocatoria = obj.attr("data-CodigoConvocatoria");
                        convocatoriaRequisitos.Init(cont,
                        {
                            Register: URL_PAGE + "Administrador/Convocatoria/RegistrarRequisitos",
                            Form: URL_PAGE + "Administrador/Convocatoria/FormRequisitos"
                        }
                        , "All");
                        convocatoriaRequisitos.Form({ CodigoConvocatoria: convocatoriaRequisitos.CodigoConvocatoria });

                        modal.css({
                            'width': '750px',
                            'margin-left': function () {
                                return -($(this).width() / 2);
                            }
                        });

                        modal.modal("show");
                    });
                }
            });
        });
    }

    // Registrar requisitos
    this._TiposPago = function () {
        var _parent = this;

        _parent._getContList().off('.registrar-tipos-pago');
        _parent._getContList().on('click', '.registrar-tipos-pago', function (e) {
            e.preventDefault();
            var obj = $(this);

            // Hacemos un modal
            var modal = _parent._getModalV2();

            $.ajax({
                url: URL_PAGE + "Administrador/Convocatoria/IndexTiposPago",
                data: { CodigoConvocatoria: obj.attr("data-CodigoConvocatoria") },
                type: "post",
                success: function (html) {
                    modal.find(".modal-body").html(html);

                    // Capturamos el contenedor
                    cont = modal.find(".modal-body").find("#_ConvocatoriaTiposPago");

                    // Ocultando botones y redefiniendo nuevo diseño de footer
                    modal.find(".modal-footer").find("#aceptar").hide();
                    modal.find(".modal-footer").find("#myModalClose").hide();
                    modal.find(".modal-footer").html('<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true" id="myModalClose"><i class="icon-ok-sign icon-white"></i>&nbsp;Cancelar</button><button type="submit" id="guardar" class="btn btn-danger"><i class="icon-ok-sign icon-white"></i>&nbsp;Guardar</button>');

                    // Asignando funcionalidad a nuevo botón de footer
                    modal.find(".modal-footer").off("click", "#guardar");
                    modal.find(".modal-footer").on("click", "#guardar", function () {
                        modal.find(".modal-body").find("#_Form").submit();
                    });

                    // Agregamos nuevos botones
                    modal.find(".modal-header").find("h2").html("Configuración de Modos de Pago");
                    cont.find("h4").html(obj.attr("data-NombreConvocatoria"));

                    //Capturamos el script
                    jQuery.getScript(URL_PAGE + "Scripts/app/administrador/ConvocatoriaTiposPago.js", function () {
                        _ConvocatoriaTiposPago.prototype = new Mantenimiento();
                        var convocatoriaTiposPago = new _ConvocatoriaTiposPago();
                        convocatoriaTiposPago.CodigoConvocatoria = obj.attr("data-CodigoConvocatoria");
                        convocatoriaTiposPago.Init(cont,
                        {
                            Register: URL_PAGE + "Administrador/Convocatoria/RegistrarTiposPago",
                            Form: URL_PAGE + "Administrador/Convocatoria/FormTiposPago"
                        }
                        , "All");
                        convocatoriaTiposPago.Form({ CodigoConvocatoria: convocatoriaTiposPago.CodigoConvocatoria });

                        modal.css({
                            'width': '750px',
                            'margin-left': function () {
                                return -($(this).width() / 2);
                            }
                        });

                        modal.modal("show");
                    });
                }
            });
        });
    }
}

$(document).ready(function () {

    _PAGE = function () {
        this.Convocatoria = "";
    };

    //Para la informacion academica
    Convocatoria.prototype = new Mantenimiento();
    _PAGE.Convocatoria = new Convocatoria();

    _PAGE.Convocatoria.Init($("#_Convocatoria"),
    {
        Register: URL_PAGE + "Administrador/Convocatoria/Registrar",
        Form: URL_PAGE + "Administrador/Convocatoria/Form",
        List: URL_PAGE + "Administrador/Convocatoria/List"
    }
    , "Modal");

    //Cargando la lista de informacion académica
    _PAGE.Convocatoria.List();

});